const Koa = require('koa');
const Router = require('koa-router');
const fs = require('fs');
const cors = require('koa-cors')
const app = new Koa();
const router = new Router();


// 强缓存
router.get('/force', async (ctx) => {
    console.log('123');
    // 第一种方法：强缓存Cache-Control
    // public 表示资源可以被缓存，
    // private 只能浏览器缓存，不包括代理服务器
    // max-age 表示缓存的最大时间，单位为秒
    ctx.set('Cache-Control','public', 'max-age=60');
    // 第二种方法：expires
    // ctx.set('Expires', new Date(Date.now() + 60 * 1000).toUTCString());
    ctx.body = {
        code:200,
        data:{
            name:'张三'
        }
    }
});
const getFileChangeTime = ()=>{
    return fs.statSync('./app.js').mtime.toUTCString();
}
// 协商缓存
router.get('/pro', async (ctx) => {
    const ifModifiedSince = ctx.get('If-Modified-Since');
    console.log('ifModifiedSince',ifModifiedSince);
    
    // Last-Modified ：设置文件最后修改时间
    const modifyTime = getFileChangeTime()
    
    
    if(ifModifiedSince == modifyTime){
        console.log('缓存了');
        ctx.status = 304;
        return;
    }
    ctx.set('Last-Modified',modifyTime);
    console.log('没有缓存');
     
    ctx.body = {
        code:200,
        data:{
            name:'张三'
        }
    }
})

app.use(cors({
    // origin: 'http://example.com', // 允许的源
    methods: ['GET', 'POST'], // 允许的 HTTP 方法
    allowedHeaders: ['Content-Type', 'Authorization'], // 允许的请求头
}));
app.use(router.routes()).use(router.allowedMethods());

const port = 3000;
app.listen(port, () => {
    console.log(`Server is running on http://localhost:${port}`);
});